#include <stdio.h>

/**
 * 走n个台阶有多少种走法
 *
 * @param n 要走的台阶数
 * @return
 */
int upstairs(int n) {
    if (1 == n) {
        // 走1个台阶有1种走法
        return 1;
    } else if (2 == n) {
        // 走2个台阶有2种走法
        return 2;
    }
    // 走n个台阶 = 先上1个台阶 + 上n-1个台阶 或者 先上2个台阶 + 上n-2个台阶
    return upstairs(n - 1) + upstairs(n - 2);
}


/**
 * 假如有n个台阶，一次只能上1个台阶或2个台阶，请问走到第n个台阶有几种走法？
 * 为便于读者理解题意，这里举例说明如下。
 * 假如有3个台阶，那么总计就有3种走法：
 * 第一种为每次上1个台阶，上3次；
 * 第二种为先上2个台阶，再上1个台阶；
 * 第三种为先上1个台阶，再上2个台阶。
 * 输入为n，输出为走到第n个台阶有几种走法
 *
 * @return
 */
int main() {
    int n, result;
    scanf("%d", &n);
    // 动态规划
    result = upstairs(n);
    printf("%d\n", result);

    return 0;
}